// 对axios进行二次封装
import axios from 'axios'
import store from '@/store/index'
// 引入进度条
import nprogress from 'nprogress'
// 引入进度条css文件(样式)
import 'nprogress/nprogress.css'


// 1. 利用axios对象的方法creata，去创建一个axios实例
// 2. request就是axios，只不过稍微配置一下
const requests = axios.create({
  // 基础路径，发请求的时候，路径当中会出现 http://zhaojiali.3vfree.cn
  baseURL: "http://39.97.218.60",
  // `timeout` 指定请求超时的毫秒数。
  // 如果请求时间超过 `timeout` 的值，则请求会被中断
  // 设置为5秒
  timeout: 5000, // 默认值是 `0` (永不超时)
})

// 请求拦截器
// 在发起请求之前，请求拦截器可以检测到，可以在请求发出去之前做一些事情
requests.interceptors.request.use((config) => {
  nprogress.start()
  // config：配置对象，对象里面有一个属性很重要，header请求头
  // 给每个请求api都加上token（token 从本地浏览器存储进行获取）
  config.headers.Authorization = store.state.tokenInfo?.access_token
  return config
})

// 响应拦截器
requests.interceptors.response.use((result) => {
  nprogress.done()
  // 成功的回调函数：服务器相应数据回来以后，响应拦截器可以检测到，可以对数据做一些事情
  return result
}, (error) => {
  // 响应失败的回调函数
  return Promise.reject(new Error('faile'))
})

// 对外暴露
export default requests;